package org.rcgwt.client.ui.grid.internal.model;

/**
 * Base Interface for Grid Model
 * 
 */

public interface IElementModel {

    enum Type {
        GRID, VIEW, GROUP, GROUP_TITLE, ROW, CELL, HEADER, TITLE_ROW, TITLE_CELL, COLUMN
    }

    Type getType();

    IElementModel getParent();

    int getModelIndex();

    int getStateMask();

    void updateStateMask(int mask, int bits);

    void appendKey(IKey key);

    public interface IKey {
        IKey add(String token);

        IKey add(String token, int value);
    }

    IGridModel getGridModel();

    IElementModelDelta< ? > createDelta();
}
